/*
* 编写代码，移除未排序链表中的重复节点。保留最开始出现的节点
* 思路：哈希表法（用一个数组标记已经出现个的元素，如果数组值为1，说明该元素已经出现过）
* https://leetcode.cn/problems/remove-duplicate-node-lcci/
* */
class RemoveDuplicateNodes {
    public ListNode removeDuplicateNodes(ListNode head) {
        if(head==null||head.next==null){
            return head;
        }
         int[] arr=new int[20000];//数组用于标记已经出现过的元素
         arr[head.val]=1;
         ListNode slow=head;
         ListNode fast=head.next;
         while(fast!=null){
             if(arr[fast.val]==1){
                 slow.next=fast.next;
                fast=fast.next;
             }else{
                 arr[fast.val]=1;
                 slow=slow.next;
                 fast=fast.next;
             }
         }
         return head;
    }
}